﻿package mortal.game.view.signUp.util
{
    import mortal.game.cache.*;
    import mortal.game.resource.*;
    import mortal.game.resource.tableConfig.*;
    import mortal.game.view.signUp.data.*;

    public class SignUpUtil extends Object
    {

        public function SignUpUtil()
        {
            return;
        }// end function

        public static function getCategoryData(param1:int) : SignUpCategoryData
        {
            var _loc_3:String = null;
            var _loc_4:String = null;
            var _loc_5:int = 0;
            var _loc_2:* = new SignUpCategoryData();
            switch(param1)
            {
                case SignUpConst.Tag_DailySignUp:
                {
                    _loc_3 = "dailySignUp";
                    _loc_4 = ImagesConst.Text_DailyGift;
                    _loc_5 = 24;
                    break;
                }
                case SignUpConst.Tag_LevelReward:
                {
                    _loc_3 = "levelReward";
                    _loc_4 = ImagesConst.Text_LevelReward;
                    _loc_5 = 46;
                    break;
                }
                case SignUpConst.Tag_OffLine:
                {
                    _loc_3 = "copyExpGetBack";
                    _loc_4 = ImagesConst.Text_ExpGetBack;
                    _loc_5 = 24;
                    break;
                }
                case SignUpConst.Tag_OffLineExp:
                {
                    _loc_3 = "offExpGetBack";
                    _loc_4 = ImagesConst.Text_OffExpGetBack;
                    _loc_5 = 24;
                    break;
                }
                case SignUpConst.Tag_OnlineReward:
                {
                    _loc_3 = "onlineReward";
                    _loc_4 = ImagesConst.Text_OnlineReward;
                    _loc_5 = 46;
                    break;
                }
                case SignUpConst.Tag_Activation_Take:
                {
                    _loc_3 = "activationTake";
                    _loc_4 = ImagesConst.Text_Jihuoma;
                    _loc_5 = 34;
                    break;
                }
                case SignUpConst.Tag_RedPack:
                {
                    _loc_3 = "redPackPanel";
                    _loc_4 = ImagesConst.Text_Hongbao;
                    _loc_5 = 46;
                    break;
                }
                case SignUpConst.Tag_Collect_Exchange:
                {
                    _loc_3 = "collectExchange";
                    _loc_4 = ImagesConst.Text_CollectExchange;
                    _loc_5 = 46;
                    break;
                }
                case SignUpConst.Tag_DoubleEleven_Collect:
                {
                    _loc_3 = "doubleElevenCollect";
                    _loc_4 = ImagesConst.Text_Active11TabWord;
                    _loc_5 = 46 - 28;
                    break;
                }
                default:
                {
                    break;
                }
            }
            _loc_2.type = _loc_3;
            _loc_2.resName = _loc_4;
            _loc_2.textXPos = _loc_5;
            _loc_2.textYPos = 18;
            return _loc_2;
        }// end function

        public static function getSignUpData() : Array
        {
            var _loc_7:SignUpDateCellData = null;
            var _loc_8:int = 0;
            var _loc_9:Array = null;
            var _loc_1:Array = [];
            var _loc_2:int = 0;
            while (_loc_2 < 31)
            {
                
                _loc_7 = new SignUpDateCellData();
                _loc_7.signDay = _loc_2 + 1;
                _loc_7.hasSignUp = false;
                _loc_7.isCanSignUp = true;
                _loc_1.push(_loc_7);
                _loc_2++;
            }
            var _loc_3:int = 35;
            var _loc_4:* = new Array(_loc_3);
            var _loc_5:* = new Date();
            _loc_5.date = 1;
            var _loc_6:* = _loc_5.day;
            if (_loc_3 - _loc_6 >= _loc_1.length)
            {
                _loc_2 = 0;
                while (_loc_2 < _loc_3)
                {
                    
                    if (_loc_2 < _loc_6)
                    {
                        _loc_4[_loc_2] = {};
                    }
                    else if (_loc_2 < _loc_6 + _loc_1.length)
                    {
                        _loc_4[_loc_2] = _loc_1[_loc_2 - _loc_6];
                    }
                    else
                    {
                        _loc_4[_loc_2] = {};
                    }
                    _loc_2++;
                }
            }
            else
            {
                _loc_8 = _loc_6 + _loc_1.length - _loc_3;
                _loc_9 = _loc_1.splice(-_loc_8);
                _loc_2 = 0;
                while (_loc_2 < _loc_6 - _loc_8)
                {
                    
                    _loc_9.push({});
                    _loc_2++;
                }
                _loc_4 = _loc_9.concat(_loc_1);
            }
            _loc_1.length = 0;
            return _loc_4;
        }// end function

        public static function hasTakableReward(param1:int) : Boolean
        {
            var _loc_2:* = CheckInAwardsConfig.instance.getRewardIdByDays(param1, false);
            var _loc_3:* = CheckInAwardsConfig.instance.getRewardIdByDays(param1, true);
            var _loc_4:* = Cache.instance.signUp.getRewardTakeState(_loc_2);
            var _loc_5:* = Cache.instance.signUp.getRewardTakeState(_loc_3);
            if (_loc_4.isCanTake && !_loc_4.isTake || _loc_5.isCanTake && !_loc_5.isTake)
            {
                return true;
            }
            return false;
        }// end function

        public static function hasDisTakableReward(param1:int) : Boolean
        {
            var _loc_2:* = CheckInAwardsConfig.instance.getRewardIdByDays(param1, false);
            var _loc_3:* = CheckInAwardsConfig.instance.getRewardIdByDays(param1, true);
            var _loc_4:* = Cache.instance.signUp.getRewardTakeState(_loc_2);
            var _loc_5:* = Cache.instance.signUp.getRewardTakeState(_loc_3);
            if (!_loc_4.isCanTake || !_loc_5.isCanTake)
            {
                return true;
            }
            return false;
        }// end function

        public static function getFirstCanTake() : int
        {
            var _loc_2:int = 0;
            var _loc_1:* = Cache.instance.signUp.allTotalDays;
            for each (_loc_2 in _loc_1)
            {
                
                if (hasTakableReward(_loc_2))
                {
                    return _loc_2;
                }
            }
            return 0;
        }// end function

        public static function getFirstCanotTake() : int
        {
            var _loc_2:int = 0;
            var _loc_1:* = Cache.instance.signUp.allTotalDays;
            for each (_loc_2 in _loc_1)
            {
                
                if (hasDisTakableReward(_loc_2))
                {
                    return _loc_2;
                }
            }
            return 0;
        }// end function

        public static function hasRewardToTake() : Boolean
        {
            var _loc_1:* = getFirstCanTake();
            return Boolean(_loc_1);
        }// end function

        public static function getDefaultDay() : int
        {
            var _loc_1:* = getFirstCanTake();
            var _loc_2:* = getFirstCanotTake();
            var _loc_3:* = Cache.instance.signUp.allTotalDays;
            if (_loc_1 != 0)
            {
                return _loc_1;
            }
            if (_loc_2 != 0)
            {
                return _loc_2;
            }
            return _loc_3[0];
        }// end function

        public static function isSignUpAvailable() : Boolean
        {
            var _loc_2:* = undefined;
            var _loc_1:* = Cache.instance.signUp.getSignUpData();
            if (_loc_1)
            {
                for each (_loc_2 in _loc_1)
                {
                    
                    if (_loc_2 is SignUpDateCellData && !_loc_2.hasSignUp)
                    {
                        if (_loc_2.isCanSignUp && _loc_2.isToday || _loc_2.isCanReSignUp)
                        {
                            return true;
                        }
                    }
                }
            }
            return false;
        }// end function

        public static function isBeforeOpenServerDate(param1:Date) : Boolean
        {
            var _loc_2:* = Cache.instance.login.loginGame.openDt;
            var _loc_3:* = new Date(_loc_2.time);
            _loc_3.hours = 0;
            var _loc_4:* = param1.time - _loc_3.time;
            if (_loc_4 < 0)
            {
                return true;
            }
            return false;
        }// end function

        public static function isBeforeCreateRoleDate(param1:Date) : Boolean
        {
            var _loc_2:* = Cache.instance.role.playerInfo.createDt;
            var _loc_3:* = new Date(_loc_2.time);
            _loc_3.hours = 0;
            var _loc_4:* = param1.time - _loc_3.time;
            if (_loc_4 < 0)
            {
                return true;
            }
            return false;
        }// end function

    }
}
